﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //在游戏中会出现很多种不同用途的 NPC，这些 NPC 有各自的存在的价值和作用，同时又具备一些共性的东西。
            //在开发 NPC 系统的时候，往往是需要提取共性，独立出一个父类，然后子类继承实现不同作用的 NPC。
            //分析：任务 NPC，商贩 NPC，铁匠 NPC，三种 NPC 的种类。
            //共有属性：npc 的名字，npc 的类型；
            //共有方法：都能和玩家交互(交谈)；

            Console.WriteLine("----------采集---------");
            TaskNPC T1 = new TaskNPC("小白兔",NPCType.任务NPC,TaskType.采集NPC,"去帮爷整俩胡萝卜！赶紧的！");
            Test(T1);
            Console.WriteLine("----------杀怪---------");
            TaskNPC T2 = new TaskNPC("张三", NPCType.任务NPC,TaskType.杀怪NPC, "年轻人，帮忙把村外的三只野猪宰了吧，村长会给你的大大滴赏赐！");
            Test(T2);
            Console.WriteLine("----------送信---------");
            TaskNPC T3 = new TaskNPC("李四", NPCType.任务NPC,TaskType.送信NCP, "我腿给摔瘸了，善良的帅小伙哦，可以帮我送完这两封信吗？");
            Test(T3);
            Console.WriteLine("----------武器---------");
            ShopNPC S1 = new ShopNPC("老王", NPCType.商贩NPC,ShopType.武器NPC, "新鲜出炉的尚方宝剑，快来看快来买！");
            Test(S1);
            Console.WriteLine("----------材料---------");
            ShopNPC S2 = new ShopNPC("老李", NPCType.商贩NPC,ShopType.材料NPC, "刚采集到的新鲜人参，不要998！不要888！只要688！");
            Test(S2);
            Console.WriteLine("----------食物---------");
            ShopNPC S3 = new ShopNPC("小刘", NPCType.商贩NPC,ShopType.食物NPC, "好吃的黄花鱼，快来瞧一瞧，看一看！");
            Test(S3);
            Console.WriteLine("----------修补---------");
            IronNPC I1 = new IronNPC("老黄", NPCType.铁匠NPC,IronType.修补NPC, "修东西！");
            Test(I1);
            Console.WriteLine("----------强化---------");
            IronNPC I2 = new IronNPC("小李", NPCType.铁匠NPC,IronType.强化NPC, "强化武器！");
            Test(I2);
            Console.WriteLine("----------打造---------");
            IronNPC I3 = new IronNPC("老子", NPCType.铁匠NPC,IronType.打造NPC, "打造装备！");
            Test(I3);
        }
        static void Test(NPC npc)
        {
            npc.Hello();
        }
    }
}
